package 链表;

public class JZ25合并两个排序的链表 {

    /**
     * 输入两个递增排序的链表，合并这两个链表并使新链表中的节点仍然是递增排序的。
     *
     * 示例1：
     * 输入：1->2->4, 1->3->4
     * 输出：1->1->2->3->4->4
     * 限制：
     * 0 <= 链表长度 <= 1000
     */

    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {

        if(l1==null){
            return l2;
        }

        if(l2==null){
            return l1;
        }

        ListNode dump=new ListNode(-1);
        ListNode cur=dump;

        while (true){

            if(l1==null){
                cur.next=l2;
                break;
            }
            if(l2==null){
                cur.next=l1;
                break;
            }

            if(l1.val>l2.val){
                cur.next=l2;
                cur=cur.next;
                l2=l2.next;
            }else{
                cur.next=l1;
                cur=cur.next;
                l1=l1.next;
            }

        }

        return dump.next;
    }

    public static void main(String[] args) {
        JZ25合并两个排序的链表 jz=new JZ25合并两个排序的链表();
        ListNode listNode1 = ListNode.createListNode(new int[]{-9,3});
        ListNode listNode2 = ListNode.createListNode(new int[]{5,7});
        ListNode listNode = jz.mergeTwoLists(listNode1, listNode2);
        ListNode.printListNode(listNode);
    }

}
